      <h1 class="entry-title entry-title-single" itemprop="headline">ABAP 开发系列(09): ABAP 数据字典</h1>

    <div class="entry-content entry-content-single entry-content-aside" itemprop="text">
      <p><b><span class='wp_keywordlink'><a href="http://www.sapjx.com/tag/sap" title="SAP" target="_blank">SAP</a></span> <span class='wp_keywordlink'><a href="http://www.sapjx.com/tag/sap-abap" title="ABAP" target="_blank">ABAP</a></span> <span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/dictionary" title="查看数据字典中的全部文章" target="_blank">数据字典</a></span>（<span class='wp_keywordlink'><a href="http://www.sapjx.com/tag/sap-abap" title="ABAP" target="_blank">ABAP</a></span> Dictionary）</b>是<span class='wp_keywordlink'><a href="http://www.sapjx.com/tag/sap" title="SAP" target="_blank">SAP</a></span>定义和管理数据的主要工具，是 <b>ABAP Workbench</b> 的重要组成部分。</p>
<p>通过<span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/dictionary" title="查看数据字典中的全部文章" target="_blank">数据字典</a></span>可以定义系统中的各类数据对象，包括数据类型、数据结构、数据库表、视图等。</p>
<p><span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/dictionary" title="查看数据字典中的全部文章" target="_blank">数据字典</a></span>中的所有对象可以供所有<span class='wp_keywordlink'><a href="http://www.sapjx.com/tag/sap" title="SAP" target="_blank">SAP</a></span>程序使用。</p>
<p>用户也可以创建自定义表，称之为<b>Add-On</b>表，一般通过字母 <b>‘Z’</b> 或者 <b>‘Y’</b> 开头定义。</p>
<p>&nbsp;<br />
<span id="more-330"></span><br />
<span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/sap" title="查看SAP中的全部文章" target="_blank">SAP</a></span> R/3 系统提供了以下 <b>T-Code</b> 维护ABAP数据字典：</p>
<p><b>SE80 &#8211; Repository Browser</b></p>
<p><b>SE15 &#8211; Repository Information System</b></p>
<p><b>SE16 /SE16N &#8211; Data Browser</b></p>
<p><b><span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/se11" title="查看SE11中的全部文章" target="_blank">SE11</a></span> &#8211; <span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/abap-dictionary" title="查看ABAP Dictionary中的全部文章" target="_blank">ABAP Dictionary</a></span></b></p>
<p><b>SE13 &#8211; Dictionary technical settings</b></p>
<p><b>SM30 &#8211; Maintain Table Views</b></p>
<p><b>SM31 &#8211; Table Maintenance</b></p>
<p>&nbsp;</p>
<p>其中，<span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/se11" title="查看SE11中的全部文章" target="_blank">SE11</a></span>为数据字典的维护工具：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Initial_Screen.png" alt="abap_09_Dictionary_Initial_Screen" width="466" height="364" class="alignnone size-full wp-image-383" /></p>
<p>&nbsp;</p>
<h2><b>1. </b><b>基础数据字段对象</b></h2>
<p><span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/sap" title="查看SAP中的全部文章" target="_blank">SAP</a></span>透明表（<span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/transparent-table" title="查看Transparent Table中的全部文章" target="_blank">Transparent Table</a></span>），系统中存储数据的物理表；</p>
<p>由多个Field 对象组成，而Field 对象则通过参考<span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/data-element" title="查看Data Element中的全部文章" target="_blank">Data Element</a></span>对象定义，而<span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/data-element" title="查看Data Element中的全部文章" target="_blank">Data Element</a></span>对象又通过参考<span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/domain" title="查看Domain中的全部文章" target="_blank">Domain</a></span>对象定义，逐层往上继承：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table.png" alt="abap_09_Transparent_Table" width="593" height="393" class="alignnone size-full wp-image-382" /></p>
<p>&nbsp;</p>
<p><b><br />
<h2>2.抽象级别</h2>
<p></b></p>
<p><b><span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/domain" title="查看Domain中的全部文章" target="_blank">Domain</a></span></b>：域，也称之为<span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/data-domain" title="查看数据域中的全部文章" target="_blank">数据域</a></span>，它是所有数据对象设置的基础；</p>
<p>从前面<a href="http://www.sapjx.com/abap-programming-data-types.html" title="ABAP Programming Language (01) – 数据类型与数据对象" target="_blank">数据类型</a>的章节中知道，ABAP有8种基本类型，然而<span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/domain" title="查看Domain中的全部文章" target="_blank">Domain</a></span>可以通过基本类型定义数据类型、格式、长度、初始化值等属性。</p>
<p>&nbsp;</p>
<p><span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/sap" title="查看SAP中的全部文章" target="_blank">SAP</a></span> R/3 系统为Domain提供了以下基本预定义类型：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Predefined_Types.png" alt="abap_09_Predefined_Types" width="501" height="610" class="alignnone size-full wp-image-381" /></p>
<p>&nbsp;</p>
<p><b>Date Element</b>：所有数据对象定义的基本类型，它可以以Domain作为参照对象，继承Domain的所有属性；</p>
<p>但是它可以在Domain的基础上重新定义相关长度、格式等属性，一个Domain下可包含多个Data Element。</p>
<p><b>Field</b>： 透明表字段，可以作为透明表的主/外键，继承了Data Element的所有属性。</p>
<p>&nbsp;</p>
<p><b><br />
<h2>3.Domain 对象创建与维护</h2>
<p></b></p>
<p>Domain的维护界面包括 <b>Properties、Definition、Value Range</b>三个选项卡：</p>
<p>&nbsp;</p>
<p><b>3.1 Properties 选项卡</b>：用于记录Domain对象的创建人、创建时间、归属开发包、语言版本属性；</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Domain_Properties.png" alt="abap_09_Domain_Properties" width="666" height="187" class="alignnone size-full wp-image-380" /></p>
<p>&nbsp;</p>
<p><b>3.2 Definition 选项卡</b>：主要用于定义该Domain对象的类型；</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Domain_Definition.png" alt="abap_09_Domain_Definition" width="648" height="358" class="alignnone size-full wp-image-379" /></p>
<p>&nbsp;</p>
<li><b>Short Description</b>：Domain的基本描述（必输项）；</li>
<li><b>Data Type</b>:   SAP预定义数据类型；</li>
<li><b>No. Characters</b>： 可保存数据字符最大长度；</li>
<li><b>Decimal Places</b>：小数点长度，用于数字类型；</li>
<li><b>Output Length</b>：显示输出的长度；</li>
<li><b>Convers. Routine</b>：定义数据转换程序名；</li>
<p>&nbsp;</p>
<p>很多数值在数据表中的保存值与其输出的表现值是不同的。</p>
<p>如：计量单位PC在数据库中保存实际为ST，所以该类型需要相关程序进行转换，</p>
<p>如：单位转换<span class='wp_keywordlink'><a href="http://www.sapjx.com/tag/function" title="函数" target="_blank">函数</a></span>格式为：<b>CONVERSION_EXIT_CUNIT_INPUT</b>，此处取其CUNIT为定义转换<span class='wp_keywordlink'><a href="http://www.sapjx.com/tag/function" title="函数" target="_blank">函数</a></span>，</p>
<p>所有转换<span class='wp_keywordlink'><a href="http://www.sapjx.com/tag/function" title="函数" target="_blank">函数</a></span>格式均为：<b>CONVERSION_EXIT_XXX_INPUT/OUTPUT</b>，其中XXX为域定义函数名。</p>
<p>&nbsp;</p>
<li><b>Sign</b>：是否包含负数，用于数字类型；</li>
<li><b>Lower Case</b>：是否允许小写；SAP中字段输入值传入系统后，都会被转换为大写格式，选择选项后，可允许输入小写；</li>
<p>&nbsp;</p>
<p><b>3.3 Value Range</b><b>选项卡</b>：定义Domain数值范围，限制该Domain输入/输出值。</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Domain_Value_Range.png" alt="abap_09_Domain_Value_Range" width="605" height="250" class="alignnone size-full wp-image-378" /></p>
<p>只能输入：<b>C</b><b>、Y</b><b>、F</b>中的一种。</p>
<p>&nbsp;</p>
<h2><b>4. Data Element 对象的创建与维护</b></h2>
<p>在Data Type文本框输入域中，输入自定义的Data Element，以’Z’ 或’Y’ 开头，然后点击”Create” 按钮创建Data Element；</p>
<p>在新建Data Element时，与Domain不同的是，Data Element会弹出对话框，让你选择哪种Data Element：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Data_Element_Init.png" alt="abap_09_Data_Element_Init" width="286" height="140" class="alignnone size-full wp-image-377" /></p>
<li><b>Data Element</b>：是一般的数据类型；</li>
<li><b><span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/structure" title="查看Structure中的全部文章" target="_blank">Structure</a></span></b>： 结构体，在《内表与内表结构》章节中介绍过结构体，可以作为一种数据类型维护在数据字典中；</li>
<li><b>Table Type</b>： 透明表类型；</li>
<p>这里直接选择第一个即可。</p>
<p>&nbsp;</p>
<p>可以查看已存在的Data Element：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Data_Element_Data_Type.png" alt="abap_09_Data_Element_Data_Type" width="680" height="412" class="alignnone size-full wp-image-376" /></p>
<p>&nbsp;</p>
<p>Data Element也包括4个标签选项卡：<b>Attribute、Data Type、Further Characteristics、Field Label</b>。</p>
<p><b>4.1 Attribute选项卡</b>： 与Domain的Properties一致，显示创建人、创建日期等基本信息；</p>
<p><b>4.2 Data Type选项卡</b>：区分<b>Elementary Type</b> 和 <b>Reference Type</b>;</p>
<p><b>Reference Type</b> 为参考数据字典中已存在的具体类定义（这里不做详细介绍）。</p>
<p><b>Element Type</b> 则又有两种定义方式：</p>
<p>1) 通过Domain定义，可以输入已经定义好的 Domain，而Data Type、Length、Decimal Places等属性会继承该Domain在系统中自动带出；</p>
<p>2) 通过R/3系统预定义类型（Predefined Type）定义，需要手动设置相应参数：</p>
<p>a. 输入R/3系统预定义类型，或按F4键，通过搜索帮助（Search Help）选择预定义类型；</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Predefined_Type_Search_Help.png" alt="abap_09_Predefined_Type_Search_Help" width="400" height="530" class="alignnone size-full wp-image-375" /></p>
<p>&nbsp;</p>
<p>b. 在Length 输入Data Element的长度；</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Data_Element_Predefined_Type_Length.png" alt="abap_09_Data_Element_Predefined_Type_Length" width="604" height="59" class="alignnone size-full wp-image-374" /></p>
<p>&nbsp;</p>
<p>c. Decimal Places 用于数字类型，显示数字保留多少位小数点；</p>
<p>若Data Type为 QUAN 的数值类型，可在这里定义需要保留几位小数。</p>
<p>&nbsp;</p>
<p><b>4.3 Further Characteristics 选项卡</b>：Data Element的高级参数设置；</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Data_Element_Further_Characteristics.png" alt="abap_09_Data_Element_Further_Characteristics" width="544" height="427" class="alignnone size-full wp-image-373" /></p>
<p>可以对Data Element设置其Search  Help，Parameter ID等。</p>
<p>Parameter ID用于SAP屏幕间传输参数：</p>
<p>输出（Outbound）使用 SET  Parameter ID ‘XXX’；输入（InBound）接收使用 GET Parameter ID ‘XXX’。</p>
<p>&nbsp;</p>
<p><b>4.4 Field Label 选项卡</b>：定义该Domain在不同数值长度时，显示不同的名称；</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Data_Element_Field_Label.png" alt="abap_09_Data_Element_Field_Label" width="678" height="235" class="alignnone size-full wp-image-372" /></p>
<p>&nbsp;</p>
<p>SAP透明表的Field对象都是通过参考Data Element对象定义类型；</p>
<p>在输出内容时，SAP会根据输出的长度适应显示不同的名称；</p>
<p>通过Short、Medium、Long、Heading 4种模式分别定义相应的名称。</p>
<p>&nbsp;<br />
&nbsp;</p>
<h2><b>5. SAP R/3</b><b>数据</b></h2>
<p>SAP R/3系统数据库中存放的数据大致分有以下几类：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_SAP_R3_Data.png" alt="abap_09_SAP_R3_Data" width="602" height="317" class="alignnone size-full wp-image-371" /></p>
<p>&nbsp;</p>
<p>1) <b>Master Data</b>：业务主数据；即：SAP 各模块中的主数据：总账科目、供应商主数据、物料主数据等；</p>
<p>2) <b>Transaction Data</b>：业务处理数据；在业务处理操作中，生成的凭证号等数据，如：销售订单凭证号、采购订单凭证号、收货凭证号等；</p>
<p>3) <b>System Data</b>：系统数据；包括ABAP程序的源码、元数据、文档等数据；</p>
<p>4) <b>Configuration Data</b>：配置数据；存放企业项目实施时，配置的初始化信息，如：货币汇率、订单类型、变式等</p>
<p>&nbsp;<br />
&nbsp;</p>
<h2><b>6. SAP Table</b><b>类型</b></h2>
<p>SAP Table类型有几种类型：<b><span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/transparent-table" title="查看Transparent Table中的全部文章" target="_blank">Transparent Table</a></span>、Pooled Table、Cluster Table、<span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/internal-table" title="查看Internal Table中的全部文章" target="_blank">Internal Table</a></span></b>。</p>
<p>&nbsp;</p>
<h2><b>6.1 Transparent Table</b></h2>
<p>透明表，透明表是一对一的表，同时存在于Dictionary 和Database中, 且具有完全相同的结构，有相同的名称，相同数量的字段，相同的字段名；</p>
<p>如若你创建一个自定义透明表的同时，完全相同的一个表将会被创建在Database中。</p>
<p>Transparent Table用来存储应用数据，而 Pooled table 和C luster table用来存储系统数据。</p>
<p>&nbsp;</p>
<h2><b>6.2  Table Pool </b><b>和 Pooled Table</b></h2>
<p>Table Pool是数据库中的一个Table，它存储的是Pooled Table。</p>
<p>R/3用Table Pool存储大量的（数十到数千个）小Table（每个只有10-100行）。</p>
<p>Table Pool减少了同时打开多个小Table所需要的数据库资源。</p>
<p>Pooled Table被SAP主要用于存储定制数据。</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Pooled_Table.png" alt="abap_09_Pooled_Table" width="474" height="303" class="alignnone size-full wp-image-370" /></p>
<p>&nbsp;</p>
<h2><b>6.3  Table Cluster </b><b>和Cluster Table</b></h2>
<p>Cluster Table类似于Pooled Table。它们用来存储少数几个（大约2-10个）非常大的Table。这几个表有相同的主键，需要同时访问它们。</p>
<p>Table Cluster包含的Table比Table Pool少的多。与Table Pool不同，Table Cluster中的每个Table有相同的主键，多个不同的Table中有相同主键的行组成Table Cluster中的一行。</p>
<p>Cluster table减少了读数据库的次数，从而提高了性能。</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Cluster_Table.png" alt="abap_09_Cluster_Table" width="474" height="312" class="alignnone size-full wp-image-369" /></p>
<p>&nbsp;</p>
<h2><b>6.4  <span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/internal-table" title="查看Internal Table中的全部文章" target="_blank">Internal Table</a></span></b></h2>
<p>内表，在ABAP Program中的临时创建存储空间的数据表，包括有5种类型：Standard Table，Sorted Table， Index Table，Hashed Table， Any Table ( Generic type , Rarely used )</p>
<p>具体内容可查看<a href="http://www.sapjx.com/abap-internal-table-and-data-structure.html" title="ABAP 开发系列(05): ABAP Programming Language (02) – 内表与内表结构" target="_blank">《内表与内表结构》</a>，这里不做累述。</p>
<p>&nbsp;</p>
<h2><b>6.5 Transparent Table </b><b>与  Cluster Table</b><b>的区别</b></h2>
<p>Transparent Table用来直接存储数据，在系统以外可以使用Open SQL语句直接读取Database的数据；</p>
<p>Cluster Table 和Pooled Table是不能从外部访问的，因为其数据都是被聚合和汇集到一个栏位中。</p>
<p>简单的说：</p>
<p>Transparent table：是对应数据库中实际存在的表，可以在数据库中直接找到</p>
<p>Cluster Table 和Pooled Table：数据库表中存放的一条实际记录，可能对应的是系统中多张表中的逻辑记录</p>
<p>&nbsp;</p>
<p><b><br />
<h2>7. 透明表（Transparent Table）的创建与维护</h2>
<p></b></p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Fields.png" alt="abap_09_Transparent_Table_Fields" width="738" height="477" class="alignnone size-full wp-image-368" /></p>
<p>Transparent Table 界面包括5个标签选项卡：<b>Attribute、Delivery and Maintenance、Fields、Entry help/check、Currency/Quantity Fields</b>。</p>
<p>&nbsp;</p>
<p><b>7.1 Attribute</b><b>选项卡</b>：</p>
<p>与 Domain 的 Properties 和 Data Element 的 Attribute 一致，显示创建人、创建日期、归属开发包、语言版本等基本信息</p>
<p><b>7.2 Delivery and Maintenance</b><b>选项卡</b>：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Deliver_and_Maintance.png" alt="abap_09_Transparent_Table_Deliver_and_Maintance" width="775" height="207" class="alignnone size-full wp-image-367" /></p>
<p>1) Delivery Class：表示该表的传递类型；通过搜索帮助看到以下几类类型：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Deliver_Class.png" alt="abap_09_Transparent_Table_Deliver_Class" width="495" height="205" class="alignnone size-full wp-image-366" /></p>
<p>&nbsp;</p>
<p>2) Data Browser/Table View Maint.：用于确认该表数据是否允许通过表维护工具直接使用;</p>
<p>展开选项，有三项可以选择，依次是: <b>有权限的维护、允许维护、不允许维护</b>；</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Data_Table_View_Maintenance.png" alt="abap_09_Transparent_Table_Data_Table_View_Maintenance" width="771" height="80" class="alignnone size-full wp-image-365" /></p>
<p>&nbsp;</p>
<p><b>7.3 Fields</b><b>选项卡</b>：显示Transparent Table维护的主要字段属性；包括：</p>
<li>Fields：表字段名称，同一表中的字段名称不能重复；</li>
<li>Key：主键，如若勾选，则表示该字段为主键，表中数据不允许重复，支持2个以上字段作为表主键；</li>
<li>Init：是否为空，如若勾选，在新增数据时，该字段不能为空；</li>
<li>Field Type：字段类型，为R/3系统中定义的Data Element，输入后，系统会带出相关的属性；</li>
<li>Data Type：数据类型，如若参照Domain定义的Data Element会带出相应的预定义数据类型，也可以通过字典维护器中的 “Predefined Type“按钮，</li>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Fields_Predefined_Type_Button.png" alt="abap_09_Transparent_Table_Fields_Predefined_Type_Button" width="639" height="101" class="alignnone size-full wp-image-364" /></p>
<p>自定义基本类型：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Fields_Predefined_Type_Input.png" alt="abap_09_Transparent_Table_Fields_Predefined_Type_Input" width="678" height="201" class="alignnone size-full wp-image-363" /></p>
<p>&nbsp;</p>
<li>Length：字段内容长度</li>
<li>Decimal Places：小数点位数</li>
<li>Short Description：表字段描述</li>
<p>&nbsp;</p>
<p><b>7.4 Entry help/check </b><b>选项卡</b>：数据参考关联表、Search Help、外键、Domain等属性信息；</p>
<p>因 SAP 使用的是关系数据库，很多主要字段可同时分布在不同表中；</p>
<p>为了保证这些关键字段的准确性，必须要求这些字段以某个主表的数据为参考标准，以防止用户在数据修改或新增时出错。</p>
<p>该选项卡中的内容信息，均为系统保留类型，在输入Field Type之后，将自动显示。</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Entry_Help_Check.png" alt="abap_09_Transparent_Table_Entry_Help_Check" width="1105" height="229" class="alignnone size-full wp-image-362" /></p>
<p>&nbsp;</p>
<p><b>7.5 Currency/Quantity Fields </b><b>选项卡</b>：货币/数量字段维护</p>
<p>数据表中有一些特殊单位，如货币、计量单位等。与它们相关的数据也是直接从关联表中获取。</p>
<p>当创建完数量字段后，都要根据通过手工维护输入参考的货币或计量单位：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Currency_Quantity_Fields.png" alt="abap_09_Transparent_Table_Currency_Quantity_Fields" width="624" height="197" class="alignnone size-full wp-image-361" /></p>
<p>如若没有设置，创建完Add-On表之后，在激活该表时，系统会报出没有维护货币或计量单位的错误。</p>
<p>&nbsp;</p>
<p><b>7.6 </b><b>透明表的技术参数设置（Technical Settings </b><b>）</b></p>
<p>当表字段维护成功后，还需要对表的技术参数进行设置；</p>
<p>技术参数界面通过字典维护器工具栏的 “Technical Settings” 按钮进入：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Technical_Settings.png" alt="abap_09_Transparent_Table_Technical_Settings" width="584" height="71" class="alignnone size-full wp-image-360" /></p>
<p>Technical Settings 维护界面：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Technical_Settings_Screen.png" alt="abap_09_Transparent_Table_Technical_Settings_Screen" width="654" height="556" class="alignnone size-full wp-image-359" /></p>
<p>1) Data Class：设置表在数据库中的物理存储空间，以便分类与维护，默认分为几类：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Data_Class.png" alt="abap_09_Transparent_Table_Data_Class" width="695" height="146" class="alignnone size-full wp-image-358" /></p>
<p>&nbsp;</p>
<p>2) Size Categories：按实际需求定义表的空间大小，以大小分为以下9种：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Size_Catalogries.png" alt="abap_09_Transparent_Table_Size_Catalogries" width="623" height="190" class="alignnone size-full wp-image-357" /></p>
<p>&nbsp;</p>
<p>3) Buffering 和 Buffering Type：定义表的缓存空间，设置缓存空间有利于提高表的检索效率，但是同样也会加大服务器的资源损耗。</p>
<p>一般不建议使用缓存，如若要提高检索效率，可以通过设置表索引。</p>
<p>4) Log data changes：此复选框设置是否会记录表数据变动情况，此功能对存储空间损耗较大，如无特殊情况不推荐使用。</p>
<p>&nbsp;</p>
<p><b>7.7 </b><b>透明表索引（Indexes</b><b>）</b></p>
<p>随着表中数据量日益增大，查询数据的速度效率也会相应的降低，可以通过对常用的字段创建索引，以提高查询效率。</p>
<p>在工具栏点击“Index”按钮，查看透明表中的索引：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Indexes.png" alt="abap_09_Transparent_Table_Indexes" width="700" height="64" class="alignnone size-full wp-image-356" /></p>
<p>标准表中都会创建相应字段的索引：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Indexes_Standard.png" alt="abap_09_Transparent_Table_Indexes_Standard" width="662" height="142" class="alignnone size-full wp-image-355" /></p>
<p>Add-On表中没有维护索引的话，是空白列表：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Indexes_Cus.png" alt="abap_09_Transparent_Table_Indexes_Cus" width="662" height="333" class="alignnone size-full wp-image-354" /></p>
<p>可以通过点击工具栏的新建索引按钮，创建索引：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Indexes_Create.png" alt="abap_09_Transparent_Table_Indexes_Create" width="352" height="103" class="alignnone size-full wp-image-353" /></p>
<p>输入索引名字：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Indexes_Create_Index_Name.png" alt="abap_09_Transparent_Table_Indexes_Create_Index_Name" width="310" height="118" class="alignnone size-full wp-image-352" /></p>
<p>进入索引字段维护界面：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Indexes_Create_Screen.png" alt="abap_09_Transparent_Table_Indexes_Create_Screen" width="595" height="556" class="alignnone size-full wp-image-351" /></p>
<p>输入索引描述及相关索引字段。</p>
<p>除了手工输入Field Name外，可以通过点击 “Table Fields”按钮，选择表中相应字段：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Transparent_Table_Indexes_Tables_Fields.png" alt="abap_09_Transparent_Table_Indexes_Tables_Fields" width="710" height="136" class="alignnone size-full wp-image-350" /></p>
<p>输入完成后，点击保存及激活按钮，激活该索引后，即可完成该设置。</p>
<p>&nbsp;</p>
<p><b><br />
<h2>8. 创建 <span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/add-on-tables" title="查看Add-On 表中的全部文章" target="_blank">Add-On 表</a></span>操作实例</h2>
<p></b></p>
<p>结合上面内容，这里给出一个操作实例，通过最快捷方式创建一个Add-On表,</p>
<p>创建自定义表，自定义Data Element，自定义Domain等。</p>
<p>&nbsp;</p>
<p>1) 通过SE11进入数据字典初始化界面，在Database Table 处输入自定义表名称：”ZSAPJX09“，点击”Create“按钮创建<span class='wp_keywordlink_affiliate'><a href="http://www.sapjx.com/tag/add-on-tables" title="查看Add-On 表中的全部文章" target="_blank">Add-On 表</a></span>：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Initial_Screen.png" alt="abap_09_Dictionary_Demo_Initial_Screen" width="465" height="366" class="alignnone size-full wp-image-349" /></p>
<p>&nbsp;</p>
<p>2)进入维护界面后，默认位于Delivery and Maintenance标签：</p>
<p>Delivery Class：由于为定制表，故选择C；</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Delivery_Class.png" alt="abap_09_Dictionary_Demo_Delivery_Class" width="495" height="205" class="alignnone size-full wp-image-348" /></p>
<p>Data Browser/Table View Maint.：允许通过维护器维护数据；</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Devliery_and_Maintenance.png" alt="abap_09_Dictionary_Demo_Devliery_and_Maintenance" width="778" height="213" class="alignnone size-full wp-image-347" /></p>
<p>&nbsp;</p>
<p>3) 切换到Fields选项卡，在字段维护中输入字段，第一行必须输入MANDT字段；</p>
<p>因为同一个SAP可以分有多个CLIENT，不同的CLIENT数据完全不同。</p>
<p>实际上同一个服务器的数据都是放在相同的表中，通过MANDT字段来保存Client信息并进行区分。</p>
<p>所建立的数据为Client独享，MANDT为SAP Table保留字，一般情况下为必填。</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Fields.png" alt="abap_09_Dictionary_Demo_Fields" width="850" height="295" class="alignnone size-full wp-image-346" /></p>
<p>MATNR为系统标准Data Element，会自动带出相应属性；</p>
<p>ZTESTF为自定义Data Element，由于还未定义该Data Element，所以相应属性：Length、Decimal Places、Sort Description都为空，且在下边栏会有<b>未激活</b>的提示；</p>
<p>先保存表定义，然后双击ZTESTF Data Element，会弹出未创建该Data Element，让你选择是否创建：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Create_Data_Element_Dialog.png" alt="abap_09_Dictionary_Demo_Create_Data_Element_Dialog" width="382" height="192" class="alignnone size-full wp-image-345" /></p>
<p>点击”Yes”按钮，进入Data Element维护界面，并输入相应选项；</p>
<p>Data Type选项卡：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Data_Element_Screen.png" alt="abap_09_Dictionary_Demo_Data_Element_Screen" width="679" height="292" class="alignnone size-full wp-image-344" /></p>
<p>&nbsp;</p>
<p>Field Label选项卡：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Data_Element_Field_Label.png" alt="abap_09_Dictionary_Demo_Data_Element_Field_Label" width="679" height="290" class="alignnone size-full wp-image-343" /></p>
<p>在定义Element Type时，“ZTEST_DOMAIN” 亦未定义Domain，同样的，先保存” ZTESTF” Data Element，然后双击 “ZTEST_DOMAIN”，弹出提示对话框：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Create_Domain_Dialog.png" alt="abap_09_Dictionary_Demo_Create_Domain_Dialog" width="382" height="192" class="alignnone size-full wp-image-342" /></p>
<p>点击“Yes”，进入Domain维护界面，并输入相应内容：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Domain_Screen.png" alt="abap_09_Dictionary_Demo_Domain_Screen" width="643" height="342" class="alignnone size-full wp-image-341" /></p>
<p>输入完成后，检查通过后，直接保存并激活即可（每个对象创建完之后必须激活，才能使用，Domain、Data Element、Table等都一样）。</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Data_Element_Active.png" alt="abap_09_Dictionary_Demo_Data_Element_Active" width="649" height="122" class="alignnone size-full wp-image-339" /></p>
<p>&nbsp;</p>
<p>激活成功后，后退（或按“F3”键），返回到Data Element维护界面，激活” ZTESTF” Data Element：</p>
<p>激活Data Element成功后，再次后退，返回到定义透明表的维护界面，这时候，TESTF字段的Domain属性会自动带出：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Fields_Created.png" alt="abap_09_Dictionary_Demo_Fields_Created" width="850" height="244" class="alignnone size-full wp-image-338" /></p>
<p>当然，也可以先创建好自定义Domain和Data Element，然后在维护字段时，直接输入Data Element。</p>
<p>&nbsp;</p>
<p>4) 点击“Technical Settings”按钮，进入技术参数设置维护界面：</p>
<p>输入Data Class 与Size Category，其他保持默认：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Technical_Settings.png" alt="abap_09_Dictionary_Demo_Technical_Settings" width="653" height="364" class="alignnone size-full wp-image-337" /></p>
<p>设置完成后，保存，技术参数状态会变成 “Saved”：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Technical_Settings_Status.png" alt="abap_09_Dictionary_Demo_Technical_Settings_Status" width="544" height="189" class="alignnone size-full wp-image-336" /></p>
<p>返回字段维护界面，保存透明表并激活，即可完成<b>Add-On</b>表的创建：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Table_Status.png" alt="abap_09_Dictionary_Demo_Table_Status" width="680" height="237" class="alignnone size-full wp-image-335" /></p>
<p>&nbsp;</p>
<p>5) Add-On表创建成功后，如若需要添加Field字段，但又不想参照Data Element定义，则可以通过Predefined Type定义；</p>
<p>输入新的字段名称后，点击 “Predefined Type”按钮：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Predefined_Type.png" alt="abap_09_Dictionary_Demo_Predefined_Type" width="850" height="203" class="alignnone size-full wp-image-334" /></p>
<p>点击后， 输入预定义类型、长度、描述，由于定义的是数值型，所以要指定保留小数点位数：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Predefined_Type_Input.png" alt="abap_09_Dictionary_Demo_Predefined_Type_Input" width="850" height="166" class="alignnone size-full wp-image-333" /></p>
<p>定义成功后，保存并激活，会发现出现错误：</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Error.png" alt="abap_09_Dictionary_Demo_Error" width="663" height="335" class="alignnone size-full wp-image-332" /></p>
<p>原因在于我们新添加的字段为数值类型字段，必须维护参照的计量单位。</p>
<p>&nbsp;</p>
<p>6) 切换到Currency/Quantity Fields 选项卡，在MENGE字段的 ”Reference Table” 和 “Reference Field” 栏位位置输入参考表和参考计量单位；</p>
<p>一般都参考物料主数据的计量单位，分别输入”MARA“和”MEINS“。</p>
<p><img src="http://www.sapjx.com/wp-content/uploads/2014/03/abap_09_Dictionary_Demo_Currency_Quantity_Fields.png" alt="abap_09_Dictionary_Demo_Currency_Quantity_Fields" width="743" height="195" class="alignnone size-full wp-image-331" /></p>
<p>输入完成后，保存并激活，这次就不会出现错误了。</p>
<p>&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;</p>
<p>参考文献：</p>
<p>《SAP ABAP实用程序开发攻略》（唐骏华 编著）</p>
<p>《SAP实用程序开发进阶》（唐 嘉 等 编著）</p>
<p>&nbsp;</p>
<p>参考文章：</p>
<p><a href="http://blog.csdn.net/kevingao/article/details/335724" target="_blank">http://blog.csdn.net/kevingao/article/details/335724</a> （科华在线）</p>
<p><a href="http://www.erpgreat.com/abap/the-different-types-of-sap-tables.htm" target="_blank">http://www.erpgreat.com/abap/the-different-types-of-sap-tables.htm</a></p>
<p>&nbsp;<br />
&nbsp;</p>